/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controllers;

import AlgoritmoPronostico.GestorVehiculos;
import beans.Mensaje;
import facade.PronosticoFacade;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import response.InformePronostico;

/**
 *
 * @author Miguel
 */

@Controller

public class PronosticoController {
    private @Autowired ServletContext servletContext;
    
    @RequestMapping("/pronostico")
    public ModelAndView Pronostico(){
        return new ModelAndView("pronostico");
    }
    
    @RequestMapping(value = "/iniciarPronostico.htm",method=RequestMethod.POST)
    public @ResponseBody Mensaje IniciarSimulacionJson(){
        Mensaje mensaje= new Mensaje();
        if (!PronosticoFacade.getInstancia().isRunning()){
            PronosticoFacade.getInstancia().setServletContext(servletContext);
            PronosticoFacade.getInstancia().runSimulation(); 
        } 
        
        return mensaje;
    }    
    
    @RequestMapping("/actualizaPosRutaPron.htm")
    public ModelAndView actualizaPosRuta(@RequestParam(value="idCarro", required=true) String idCarro, @RequestParam(value="idPedido", required=true) String idPedido, @RequestParam(value="idCliente", required=true) String idCliente, HttpServletRequest request,  
            HttpServletResponse response) { 
        int idCarroI=-1;
        int idPedidoI=-1;
        int idClienteI=-1;
        if (idCarro.length()!=0){
         idCarroI = Integer.parseInt(idCarro);
        }    
        if (idPedido.length()!=0){
         idPedidoI = Integer.parseInt(idPedido);
        } 
        if (idCliente.length()!=0){
         idClienteI = Integer.parseInt(idCliente);
        }
        GestorVehiculos gestorV=GestorVehiculos.getInstancia();
        String textoJSON=gestorV.getJson(idCarroI, idPedidoI, idClienteI);
        return new ModelAndView("ruta", "textoJSON", textoJSON);//el primer parametro es el nombre de la vista
    }
    
    @RequestMapping(value="/informePronostico.htm",method=RequestMethod.POST)
    public @ResponseBody InformePronostico ResultadoPronostico(){
        InformePronostico infPro = InformePronostico.getInstancia();
        
        if(PronosticoFacade.falloPronostico == true)
            infPro.me = "No corre";
//        for (int i=0;i<100000;i++){
//            if (i == 99999){
//                infPro.me="No corre";
//                infPro.fecha = "30-05-2013";
//                infPro.turno = 1;
//            }
//        }        
        return infPro;        
    }
}
